package com.lxinet.jeesns.modules.wechat.service;

import com.blade.kit.json.JSONArray;
import com.blade.kit.json.JSONObject;
import com.lxinet.jeesns.modules.wechat.entity.UserName;
import com.lxinet.jeesns.modules.wechat.entity.WechatContact;
import com.lxinet.jeesns.modules.wechat.entity.WechatMeta;
import com.lxinet.jeesns.modules.wechat.exception.WechatException;
import org.apache.commons.fileupload.FileItem;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.List;


public interface WechatService {
	
	/**
	 * 获取UUID
	 * @return
	 */
	String getUUID();
	
	/**
	 * 微信初始化
	 * @param wechatMeta
	 * @throws WechatException
	 */
	void wxInit(WechatMeta wechatMeta);
	
	/**
	 * 开启状态通知
	 * @return
	 */
	void openStatusNotify(WechatMeta wechatMeta);
	
	/**
	 * 获取联系人
	 * @param wechatMeta
	 * @return
	 */
	WechatContact getContact(WechatMeta wechatMeta);
	
	/**
	 * 选择同步线路
	 * 
	 * @param wechatMeta
	 * @return
	 * @throws WechatException
	 */
	void choiceSyncLine(WechatMeta wechatMeta);
	
	/**
	 * 消息检查
	 * @param wechatMeta
	 * @return
	 */
	int[] syncCheck(WechatMeta wechatMeta);
	
	/**
	 * 处理聊天信息
	 * @param wechatMeta
	 * @param data
	 */
	void handleMsg(WechatMeta wechatMeta, JSONObject data) ;
	
	/**
	 * 获取最新消息
	 * @param meta
	 * @return
	 */
	JSONObject webwxsync(WechatMeta meta);

	/**
	 * 发送消息
	 * @param meta
	 * @return
	 */
	void wxSendMsg(WechatMeta meta, String content, String to);

	/**
	 * 创建群聊
	 * @return
	 */
	void createChatRoom(WechatMeta meta, String topic, String memberCount,  JSONArray jsonArray);

    /**
     * 追加群成员
     *
     * */
    void addToChatRoom(WechatMeta meta, String chatRoomName , String username);

    /**
     * 批量获取群成员
     *
     * */
    JSONObject batchGetContact(WechatMeta meta ,String count ,JSONArray jsonArray );

    /**
     * 删除群成员
     *
     * */
    void updateChatRoom(WechatMeta wechatMeta, String chatRoomName, String username);

	/**
	 * 上传图片
	 * @param wechatMeta
	 * @param
	 * @return
	 */
	JSONObject upLoadImg(WechatMeta wechatMeta, File file, String formusername, String tousername) throws IOException;


	/**
	 * 发送消息
	 * @param meta
	 * @return
	 */
	void wxSendMsgImg(WechatMeta meta, String mediaId, String to) throws IOException;
}
